/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package msncommonsc;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import msncommonsc.MensajeDTO;

/**
 *
 * @author Martin
 */
public class GuardarC {

    private String archivo;
    private static GuardarC instance = new GuardarC();
    private FileWriter fw;

    public FileWriter getFw() {
        return fw;
    }

    public void setFw(FileWriter fw) {
        this.fw = fw;
    }

    public static GuardarC getInstance() {
        return instance;
    }

    private GuardarC() {
    }

    public void persistirMensaje(MensajeDTO msj, boolean enviado) {
        try {
            String persona = "";
            String fecha = darFecha();
            String hora = darHora();
            if (enviado) {
                persona = msj.getDestino();
                archivo = persona + fecha + ".txt";
            } else {
                persona = msj.getOrigen();
                archivo = persona + fecha + ".txt";
            }
            List<String> leerr = leerLog(archivo);
            fw = new FileWriter(archivo);
            BufferedWriter bw = new BufferedWriter(fw);
            PrintWriter salida = new PrintWriter(bw);
            for (String text : leerr) {
                salida.println(text);
            }
            salida.println(hora + " - " + persona + " -->  " + msj.getMensaje());
            salida.close();
            guardarRegistro(archivo);
        } catch (java.io.IOException ioex) {
            System.out.println("se presento el error: " + ioex.toString());
        }
    }

    public List<String> leerLog(String txt) throws IOException {
        ArrayList<String> text = new ArrayList<String>();
        try {
            FileReader fr = new FileReader(txt);
            BufferedReader entrada = new BufferedReader(fr);
            String s;
            while ((s = entrada.readLine()) != null) {
                text.add(s);
            }
        } catch (java.io.FileNotFoundException fnfex) {
            System.out.println("se presento el error: " + fnfex.toString());
        }
        return text;
    }

    public String darFecha() {
        try {
            Date fecha = new Date();
            int hora = fecha.getHours();
            String aux = fecha.getDate() + "-" + fecha.getMonth() + "-" + (fecha.getYear() + 1900);
            return aux;
        } catch (Exception e) {
            throw new UnsupportedOperationException("Not supported yet.");
        }
    }

    public String darHora() {
        try {
            Date fecha = new Date();
            String hora = "" + fecha.getHours();
            String min = "" + fecha.getMinutes();
            String aux = hora + ":" + min;
            return aux;
        } catch (Exception e) {
            throw new UnsupportedOperationException("Not supported yet.");
        }
    }

    public void guardarLog(String nombre, String accion) throws IOException {
        try {
            archivo = "Log.txt";
            String fecha = darFecha();
            String hora = darHora();
            List<String> leerr = leerLog(archivo);
            String text = fecha + "-" + hora + "-" + nombre + "-->" + accion;
            fw = new FileWriter(archivo);
            BufferedWriter bw = new BufferedWriter(fw);
            PrintWriter salida = new PrintWriter(bw);
            for (String x : leerr) {
                salida.println(x);
            }
            salida.println(text);
            salida.close();
        } catch (java.io.IOException ioex) {
            System.out.println("se presento el error: " + ioex.toString());
        }
    }

    public void guardarRegistro(String reg) {
        try {
            String registro = "registro.txt";
            List<String> leer = leerLog(registro);
            if (!leer.contains(reg)) {
                fw = new FileWriter(registro);
                BufferedWriter bw = new BufferedWriter(fw);
                PrintWriter salida = new PrintWriter(bw);
                for (String x : leer) {
                    salida.println(x);
                }
                salida.println(reg);
                salida.close();
            }
        } catch (Exception e) {
            throw new UnsupportedOperationException("Not supported yet.");
        }
    }
}
